// 登录验证模块

// 引入User集合规则模块
const User = require('../../model/user.js');
// 引入bcrypt密码加密模块
const bcrypt = require('bcrypt');

module.exports = async (req, res, next) => {
    let {email, password} = req.body;
    email = email.trim();
    password = password.trim();
    // 用户没有输入邮箱或者密码
    if(email.length == 0 || password.length == 0) {
        return res.status(400).render('admin/loginError', {msg: '邮箱或密码错误！'});
    }
    // 查询邮箱是否存在
    try {
        let result = await User.findOne({email: email});
        // 若查询到用户则比对密码，否则响应邮箱或密码错误
        if(result) {
            if(await bcrypt.compare(password, result.password)) {
                // 密码比对成功
                // 在session中存入username
                req.session.username = result.username;
                // 在session中存入登录用户的角色
                req.session.role = result.role;
                // 在app.locals中放入用户信息，方便所有模板使用
                req.app.locals.userInfo = result;
                // 判断用户身份，普通用户跳转到用户首页，超级管理员跳转到用户管理页面
                if(result.role == 'admin') return res.redirect('/admin/users');
                else return res.redirect('/home');
                
            } else {
                // 密码比对失败
                return res.status(400).render('admin/loginError', {msg: '邮箱或密码错误！'});
            }
        } else {
            return res.status(400).render('admin/loginError', {msg: '邮箱或密码错误！'});
        }
    } catch (error) {
        next(error)
    }
}